Capture correct tracebacks when using inline_callbacks
.
#475
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #449. I'm not sure if this a great solution, but it appears to fix the issue by letting Failure's stack walking find the right context.
When an inlineCallback completes synchronously, such as in tests, twisted will
string-ify the traceback, which means that when the exception is then thrown
into another inlineCallback function, the stack trace is lost[1]. Twisted works
around this by inspect the stack and finding the Failure instance from the
inner call, to get traceback there.
However, this only works if
Failure.throwExceptionIntoGenerator
is used.This adjusts eliot_friendly_generator_function to use
Failure
, instead of anexc_info tuple, when used via
inline_callabcks
.[1] The string-ified traceback can't be passed to
.send
.